<?php

class Usuario {

    private $idUsuario;
    private $nomeUsuario;
    private $senhaUsuario;
    private $emailUsuario;
    private $cpfUsuario;
    private $enderecoUsuario;
    private $telefoneUsuario;
    private $dtLoginUsuario;
    private $tipo;
    private $tipoDesc;
    //variaveis internas
    private $bd; //conexão com o banco

    public function __construct() {
        $this->bd = new bd();
    }

    public function __get($key) {
        return $this->$key;
    }

    //método de retorno de valores do objeto
    public function __set($key, $value) {
        $this->$key = $value;
    }

    //METODOS
    //BANCO DE DADOS
    public function inserir() {

        $sql = "SELECT * FROM usuario WHERE ativo=1 AND emailusuario ILIKE '$this->emailUsuario'";
        $retorno = pg_query($sql);

        if (pg_num_rows($retorno) == 0) {
            $sql = "INSERT INTO usuario (nomeusuario,senhausuario,emailusuario,cpfusuario,enderecousuario,telefoneusuario,dtloginusuario,tipo)
                VALUES ('$this->nomeUsuario','$this->senhaUsuario' ,'$this->emailUsuario','$this->cpfUsuario','$this->enderecoUsuario' ,'$this->telefoneUsuario','$this->dtLoginUsuario',$this->tipo)";
            $retorno = pg_query($sql);
            return $retorno;
        } else {
            $retorno = FALSE;
            return $retorno;
        }
    }

// --------------------------------------------------------------------------
    public function listar($complemento = "") {
        $sql = "SELECT * FROM usuario " . $complemento;

        $resultado = pg_query($sql);
        $retorno = NULL;

        //percorre os registros
        while ($reg = pg_fetch_assoc($resultado)) {
            //transforma em objetos categoria
            $obj = new Usuario();
            $obj->idUsuario = $reg["idusuario"];
            $obj->nomeUsuario = $reg["nomeusuario"];
            $obj->senhaUsuario = $reg["senhausuario"];
            $obj->emailUsuario = $reg["emailusuario"];
            $obj->cpfUsuario = $reg["cpfusuario"];
            $obj->enderecoUsuario = $reg["enderecousuario"];
            $obj->telefoneUsuario = $reg["telefoneusuario"];
            $obj->dtLoginUsuario = $reg["dtloginusuario"];
            $obj->tipo = $reg["tipo"];

            //adiciona a variavel de retorno
            $retorno[] = $obj;
        }
        return $retorno;
    }

// --------------------------------------------------------------------------
    public function ativar($email) {
        $sql = "UPDATE usuario SET ativo=1 WHERE emailusuario=$email";
        $retorno = pg_query($sql);
        return $retorno;
    }

// --------------------------------------------------------------------------
    public function excluir() {
        $sql = "UPDATE usuario SET ativo=0 WHERE idusuario =$this->idUsuario";
        $retorno = pg_query($sql);
        return $retorno;
    }

// --------------------------------------------------------------------------
    public function excluirVerifica() {
        $sql = "SELECT *  FROM usuario "
                . " INNER JOIN pedido ON usuario.idusuario = pedido.cliente"
                . " WHERE usuario.ativo=1 AND idusuario = $this->idUsuario";
        $retorno = pg_query($sql);
        $total = pg_num_rows($retorno);
        return $total;
    }

// --------------------------------------------------------------------------
    public function atualizar() {
        $retorno = false;                                 // nome dos campos
        $sql = "UPDATE usuario SET
                     nomeusuario      ='$this->nomeUsuario',
                     emailusuario     ='$this->emailUsuario',
                     cpfusuario       ='$this->cpfUsuario',
                     enderecousuario  ='$this->enderecoUsuario',
                     telefoneusuario  ='$this->telefoneUsuario',
                     tipo             ='$this->tipo'
                     where idusuario  ='$this->idUsuario'";
        $retorno = pg_query($sql);

        return $retorno;
    }

// --------------------------------------------------------------------------
    public function gravaUltimoLogin() {
        $retorno = false;
        $sql = "UPDATE usuario SET
                    dtloginusuario= now()
                    WHERE idusuario='$this->idUsuario'";
        $retorno = pg_query($sql);

        return $retorno;
    }

// --------------------------------------------------------------------------
    public function retornarUnico() {
        $sql = "SELECT * FROM usuario WHERE ativo = 1 AND idusuario='$this->idUsuario'";

        $resultado = pg_query($sql);
        $retorno = NULL;

        $req = pg_fetch_assoc($resultado);
        if ($req == true) {
            $obj = new Usuario();
            $obj->idUsuario = $req["idusuario"];
            $obj->nomeUsuario = $req["nomeusuario"];
            $obj->senhaUsuario = $req["senhausuario"];
            $obj->enderecoUsuario = $req["enderecousuario"];
            $obj->telefoneUsuario = $req["telefoneusuario"];
            $obj->emailUsuario = $req["emailusuario"];
            $obj->cpfUsuario = $req["cpfusuario"];
            $obj->dtLoginUsuario = $req["dtloginusuario"];
            $obj->tipo = $req["tipo"];

            $retorno = $obj;
        } /* else {
          $retorno = null;
          } COMO $retorno ja vem com NULL não é necessário este else - RICARDO - 17/07/14 */

        return $retorno;
    }

// --------------------------------------------------------------------------
    public function listarJoin($complemento = "") {

        $sql = "SELECT usuario.*,tipo.*
        FROM usuario
        INNER JOIN tipo ON usuario.tipo=tipo.idtipo
        " . $complemento;


        $resultado = pg_query($sql);
        $retorno = NULL;

        //percorre os registros
        while ($reg = pg_fetch_assoc($resultado)) {
            //transforma em objetos categoria
            $obj = new Usuario();
            $obj->idUsuario = $reg["idusuario"];
            $obj->nomeUsuario = $reg["nomeusuario"];
            $obj->senhaUsuario = $reg["senhausuario"];
            $obj->enderecoUsuario = $reg["enderecousuario"];
            $obj->telefoneUsuario = $reg["telefoneusuario"];
            $obj->emailUsuario = $reg["emailusuario"];
            $obj->cpfUsuario = $reg["cpfusuario"];
            $obj->dtLoginUsuario = $reg["dtloginusuario"];
            $obj->tipo = $reg["tipo"];
            $obj->tipoDesc = $reg["desctipo"];

            //adiciona a variavel de retorno
            $retorno[] = $obj;
        }
        return $retorno;
    }

}
